﻿namespace CSharpPro._1016
{
    public class Demo
    {
        // 作业1键盘输入三个整数x、y、z，请把这三个数由小到大输出
     
            static void Num()
            {
                // 提示用户输入三个整数
                Console.WriteLine("请输入三个整数，用空格分隔：");
        
                // 读取用户输入并分割成三个字符串
                string[] input = Console.ReadLine().Split();
        
                // 将字符串转换为整数
                int x = int.Parse(input[0]);
                int y = int.Parse(input[1]);
                int z = int.Parse(input[2]);
        
                // 排序逻辑
                int temp;
                if (x > y)
                {
                    temp = x;
                    x = y;
                    y = temp;
                }
                if (x > z)
                {
                    temp = x;
                    x = z;
                    z = temp;
                }
                if (y > z)
                {
                    temp = y;
                    y = z;
                    z = temp;
                }
        
                // 输出排序结果
                Console.WriteLine("从小到大排序后的结果为：");
                Console.WriteLine($"{x} {y} {z}");
            }
        }
    // 作业2打印出1-100之间所有不是7的倍数和不包含7的数字， 并求和。
     class Program
    {
        static void Sum()
        {
            int sum = 0;
            Console.WriteLine("1-100之间所有不是7的倍数且不包含7的数字：");
        
            for (int i = 1; i <= 100; i++)
            {
                // 检查是否是7的倍数
                bool isMultipleOf7 = i % 7 == 0;
            
                // 检查是否包含数字7（个位或十位是7）
                bool contains7 = (i % 10 == 7) || (i / 10 == 7);
            
                // 如果既不是7的倍数也不包含7，则处理该数字
                if (!isMultipleOf7 && !contains7)
                {
                    Console.Write(i + " ");
                    sum += i;
                }
            }
        
            Console.WriteLine("\n这些数字的总和是：" + sum);
        }
    }
    // 作业3打印九九乘法表

  

    class Program1
    {
        static void TAble()
        {
            Console.WriteLine("九九乘法表：");
            Console.WriteLine("---------------------------");
        
            // 外层循环控制行数（乘数）
            for (int i = 1; i <= 9; i++)
            {
                // 内层循环控制列数（被乘数）
                for (int j = 1; j <= i; j++)
                {
                    // 格式化输出，保持对齐
                    Console.Write($"{j}×{i}={i*j}\t");
                }
                // 每行结束后换行
                Console.WriteLine();
            }
        
            Console.WriteLine("---------------------------");
        }
    }

    // 作业4一个数如果恰好等于它的所有真因子（即除了自身 外的所有因数）之和，这个数就称为"完数"。请编程求出1000以内的所有完数。
   

    class Program2
    {
        static void NUmerical()
        {
            Console.WriteLine("1000以内的完数有：");
        
            // 遍历1到1000的所有数
            for (int num = 2; num <= 1000; num++)
            {
                int sum = 0; // 用于存储所有真因子的和
            
                // 查找当前数字的所有真因子
                for (int i = 1; i < num; i++)
                {
                    // 如果i是num的因子
                    if (num % i == 0)
                    {
                        sum += i;
                    }
                }
            
                // 判断是否为完数（真因子之和等于自身）
                if (sum == num)
                {
                    Console.Write(num + " ");
                }
            }
        
            Console.WriteLine();
        }
    }
    // 作业5键盘录入一个正整数，请求：1.它是几位数？2.逆序打印出各位数字。
  

    class Program4
    {
        static void Back()
        {
            Console.WriteLine("请输入一个正整数：");
            string input = Console.ReadLine();
        
            // 验证输入是否为正整数
            if (int.TryParse(input, out int number) && number > 0)
            {
                // 1. 计算数字的位数
                int digitCount = input.Length;
                Console.WriteLine($"该数字是 {digitCount} 位数");
            
                // 2. 逆序打印各位数字
                Console.Write("逆序打印各位数字：");
                for (int i = input.Length - 1; i >= 0; i--)
                {
                    Console.Write(input[i] + " ");
                }
                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("输入无效，请输入一个正整数！");
            }
        }
    }
    // 作业6打印菱形，根据输入的行数，显示菱形形状

   

    class Program5
    {
        static void Cir()
        {
            Console.WriteLine("请输入菱形的总行数（奇数）：");
            string input = Console.ReadLine();
        
            // 验证输入是否为有效的奇数
            if (int.TryParse(input, out int rows) && rows > 0 && rows % 2 != 0)
            {
                PrintDiamond(rows);
            }
            else
            {
                Console.WriteLine("输入无效，请输入一个正奇数！");
            }
        }
    
        // 打印菱形的方法
        static void PrintDiamond(int rows)
        {
            int half = rows / 2;
        
            // 上半部分（包括中间行）
            for (int i = 0; i <= half; i++)
            {
                // 打印空格
                for (int j = 0; j < half - i; j++)
                {
                    Console.Write(" ");
                }
            
                // 打印星号
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    Console.Write("*");
                }
            
                Console.WriteLine();
            }
        
            // 下半部分
            for (int i = half - 1; i >= 0; i--)
            {
                // 打印空格
                for (int j = 0; j < half - i; j++)
                {
                    Console.Write(" ");
                }
            
                // 打印星号
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    Console.Write("*");
                }
            
                Console.WriteLine();
            }
        }
    }

    }
